#include <iostream>
#include <string>
#include "FunctionTemplate.h"


using namespace std;

template <typename T>
extern int cmp(const T&, const T&);

template <typename T, size_t N>
void array_init(T (&parm)[N]){
	for(size_t i = 0; i != N; ++i)
		parm[i] = i;
}

//template <class T, class U>
// sum(T, U);
//
int staticArray(){
	static int static_arr[5] = {1, 2, 3, 4, 5};

	for(int i = 0; i < 5; i ++)
		cout << static_arr[i] << endl;

	return 0;
}
/*
extern void caller(int (*)(int), int);
extern int (*funcPtr)(int);

int mmain(){

	caller(funcPtr, 10);

	int iA = 1, iB = 2;
	string strA = "1", strB = "2";

	staticArray();

	int ia[2];
	string stra[3];

	array_init(ia);
	array_init(stra);

	// cout << cmp(iA, iB) << endl << cmp(strA, strB) << endl;

	return EXIT_FAILURE;
}*/